// 版权所有2010 Go作者。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package textproto

// MIMEHeader表示将键映射到值集的MIME样式头。
type MIMEHeader map[string][]string

// Add将密钥、值对添加到头中。
// 它附加到与键相关的任何现有值。
func (h MIMEHeader) Add(key, value string) {
	key = CanonicalMIMEHeaderKey(key)
	h[key] = append(h[key], value)
}

// Set将与key关联的头条目设置为单个元素值。它将替换与密钥关联的任何现有
// 值。
func (h MIMEHeader) Set(key, value string) {
	h[CanonicalMIMEHeaderKey(key)] = []string{value}
}

// Get获取与给定键关联的第一个值。
// 不区分大小写；CanonicalTimeHeaderKey用于对提供的密钥进行规范化。
// 如果没有与键关联的值，Get将返回“”。
// 要使用非规范密钥，请直接访问地图。
func (h MIMEHeader) Get(key string) string {
	if h == nil {
		return ""
	}
	v := h[CanonicalMIMEHeaderKey(key)]
	if len(v) == 0 {
		return ""
	}
	return v[0]
}

// Values返回与给定键关联的所有值。
// 不区分大小写；CanonicalTimeHeaderKey是
// 用于规范化提供的密钥。要使用非规范
// 键，请直接访问地图。
// 返回的切片不是副本。
func (h MIMEHeader) Values(key string) []string {
	if h == nil {
		return nil
	}
	return h[CanonicalMIMEHeaderKey(key)]
}

// Del删除与键关联的值。
func (h MIMEHeader) Del(key string) {
	delete(h, CanonicalMIMEHeaderKey(key))
}
